【OpenCV实战】视频转图像,视频抽帧,图像合成视频 | 您所在的位置:网站首页 › python 图像转视频 › 【OpenCV实战】视频转图像,视频抽帧,图像合成视频 |
写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为:【AI 菌】的博客 我的Github项目地址是:【AI 菌】的Github 前言: 在做深度学习目标检测项目中,有的时候需要自己制作图像数据集。一张张去拍图片是不太现实的做法。我们经常是先用相机拍取连续的视频,然后再将视频切成若干图片。下面就是我切分后的效果: 这篇文章主要来教大家如何实现视频与图像之间的互转。 一、视频转图像由于连续视频相邻帧的图像相似度很高,这对于数据集来说并不是一件好的事情,所以可以隔帧取图像。在下面的示例中,我就是每隔10帧取一次。 Python 代码如下: import cv2 def video2images(Video_Dir): """ function: video to pictures author: AIJun date:2021/3/17 """ cap = cv2.VideoCapture(Video_Dir) c = 1 # 帧数起点 index = 1 # 图片命名起点,如1.jpg if not cap.isOpened(): print("Cannot open camera") exit() while True: # 逐帧捕获 ret, frame = cap.read() # 如果正确读取帧,ret为True if not ret: print("Can't receive frame (stream end?). Exiting ...") break if c % 10 == 0: cv2.imwrite('pictures/' + str(index) + '.jpg', frame) index += 1 c += 1 cv2.waitKey(1) # 按键停止 if cv2.waitKey(1) == ord('q'): break cap.release() Video_Dir = "D:\数据集\data3_16\WIN_20210316_17_46_54_Pro.mp4" video2images(Video_Dir) 二、图像合成视频下面展示了,将连续的图片合成一条视频,视频的帧率为24。Python代码如下: import glob import os import cv2 def images2video(image_dir, save_name): fps = 24 fourcc = cv2.VideoWriter_fourcc('X','V','I','D') video_w = cv2.VideoWriter(save_name, fourcc, fps, (1920, 1080)) # 扫描文件夹中所有jpg文件 images = glob.glob(os.path.join(image_dir, "*.jpg")) for i in range(1, len(images)): # 选中名为"{}.jpg".format(1) = 1.jpg image_name = os.path.join(image_dir, "{}.jpg".format(i)) frame = cv2.imread(image_name) video_w.write(frame) video_w.release() image_dir = "D:\Project\VideoToImage\pictures" save_name = "test.avi" images2video(image_dir, save_name)由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教! 推荐文章 【C++21天养成计划】不聊学习只谈干货(Day1)【人生苦短,我学 Python】序言——不学点Python你就out了?TF2.0深度学习实战(一):分类问题之手写数字识别 |
CopyRight 2018-2019 实验室设备网 版权所有 |